Trading interface retrieved based upon barcode data

ABSTRACT

Methods, systems, and apparatuses, including computer programs encoded on computer-readable media, for receiving barcode data including a company identifier. The company identifier is determined from the barcode data. A company name is determined based upon the company identifier. One or more associated company names associated with the manufacturer are determined based upon the company name. Based upon the company name, a ticker symbol is determined. In addition, one or more ticker symbols based upon the one or more associated company names are determined.

CROSS-REFERENCE TO RELATED PATENT APPLICATIONS

This application claims the benefit of U.S. Prov. App. No. 61/570,199,filed Dec. 13, 2011.

BACKGROUND

Universal product codes (UPCs) are a type of barcode used to track itemsin various stores. There are various formats for UPCs. FIG. 1Aillustrates a UPC-A version UPC that includes twelve digits. The twelvedigits include eleven identifying digits and one check digit. The UPC100 includes a company prefix 106 that is made up of 6, 7, 8, or 9digits from the identifying digits. The company prefix 106 identifies acompany, such as, but not limited to, a manufacturer, producer,supplier, etc. For UPCs that are used in various stores, the companyprefix 106 is assigned by a third party to ensure the various companyprefixes are unique. A product number 110, which comprises the remainingidentifying digits, is used by a company to identify the productassociated with a UPC. Companies can use the product number 110 invarious ways to identify the associated product. The UPC 100 alsoincludes a check digit 114 that can be used to verify the identifyingdigits are valid. To help scanning UPCs, the UPC 100 includes guard bars104, 108, and 112, that separate the company prefix 106, the productnumber 110, and the check digit 114.

The guard bars 104, 108, and 112 help barcode scanners to read barcodes.Barcode scanners are electric devices that include a light source, alens, and a light sensor. The light sensor translates optical impulsesinto binary information. A barcode scanner can also include a decoderthat analyzes the light sensor data to decode the data encoded in thebarcode into barcode data. The barcode data can be sent to various otherdevices through an output port on the barcode scanner.

Various other forms of barcodes exist, such as a two-dimensionalbarcode. One example of a two-dimensional barcode is a quick responsecode (QR code). QR codes are capable of storing a large amount of datacompared with one-dimensional barcodes. For example, a QR code canencode 4,296 alphanumeric characters. FIG. 1B illustrates a QR code 150.The QR code 150 includes three position patterns 152 and an alignmentpattern 154 that are used in scanning the QR code 150 and decoding itsdata. The data of a QR code is encoded in a data area 156.

SUMMARY

In general, one aspect of the subject matter described in thisspecification can be embodied in methods for receiving barcode dataincluding a company identifier. The company identifier is determinedfrom the barcode data. A company name is determined based upon thecompany identifier. One or more associated company names associated withthe manufacturer are determined based upon the company name. Based uponthe company name, a ticker symbol is determined. In addition, one ormore ticker symbols based upon the one or more associated company namesare determined. Other implementations of this aspect includecorresponding systems, apparatuses, and computer-readable mediaconfigured to perform the actions of the method.

BRIEF DESCRIPTION OF THE DRAWINGS

The details of one or more implementations of the subject matterdescribed in this specification are set forth in the accompanyingdrawings and the description below. Other features, aspects, andadvantages of the subject matter will become apparent from thedescription, the drawings, and the claims.

FIG. 1A illustrates a UPC-A version UPC.

FIG. 1B illustrates a QR code.

FIGS. 2A-2C are illustrations of a trading interface retrieved basedupon a UPC in accordance with an illustrative implementation.

FIGS. 3A-3C are illustrations of a trading interface retrieved basedupon a UPC in accordance with an illustrative implementation.

FIG. 4 is a flow diagram of a process for retrieving a trading interfacebased upon a UPC in accordance with an illustrative implementation.

FIG. 5 is a block diagram of a computer system in accordance with anillustrative implementation.

Like reference numbers and designations in the various drawings indicatelike elements.

DETAILED DESCRIPTION

The invention may be used with any optical representation of data,including barcodes. In one embodiment, a barcode is the UniversalProduct Code (UPC). In another embodiment, a barcode is atwo-dimensional barcode, such as, but not limited to, a Quick Response(QR) code.

Barcodes, such as UPC codes, can be scanned using various scanners. Forexample, a camera or mobile computing devices, such as a cell phone, canbe used to capture an image of a UPC. The image data can be processed todetermine the number encoded by the UPC. FIGS. 2A-2C are illustrationsof a trading interface retrieved based upon a UPC in accordance with anillustrative implementation. A mobile computing device 200 can include acamera. To capture a UPC, the mobile computing device 200 is positioneduntil the UPC is within a viewfinder 202. Pressing a scan button 204 cancapture an image of the UPC code. The image data can be processed by themobile computing device 200 or sent to a remote computing device. Thecomputing device can process the image to decode the sequence of numbersencoded in the captured UPC. In addition to UPCs, other barcodes can bescanned and processed as is known in the art; for example, matrixbarcodes, QR codes, EAN1-3, GS1-128, etc.

Once the sequence of numbers has been decoded, the various components ofthe UPC, such as, but not limited to, the company prefix 106, theproduct number 110, etc., can be determined. The company prefix is oneexample of a company identifier. In one implementation, the companyidentifier is used to determine a company name associated with thecompany identifier. In some implementations, the company name identifiesa manufacturer. The manufacturer may or may not be a publicly tradablecompany. For example, the manufacturer may be a separate division of apublicly traded company.

In one implementation, the company name is determined from a trusteddatabase using the company identifier. If a matching company name isfound, additional information associated with the company can bedetermined from the trusted database; for example, one or more companiesassociated with the company name. In one implementation, the trusteddatabase provides an indication that no further information is required.In this implementation, the information returned from the trusteddatabase is in a format that requires no further processing and can bedisplayed to a user. In other implementations, the returned company nameand/or decoded UPC number can be used to search an untrusted databasefor additional information.

The decoded UPC number can also be used to look up product relatedinformation from the trusted database, such as but not limited to aproduct name, product description, product image, etc., associated withthe UPC. For example, the company identifier along with the productnumber can be used to determine the product-related information. Theproduct-related information can then be displayed 206 on the mobilecomputing device 200. As the use of a product number varies by thecompany, there may not be corresponding product information with a UPCcode. To help build a database, a user can be asked to provideinformation that is used to associate product related information with aUPC. For example, the mobile computing device 200 can ask a user toprovide a company name in an input box 210 if a scanned UPC is notassociated with product-related information. The user can also be askedfor the product name and to take a picture of the product. Thisinformation can be sent to a remote computing device and stored in thetrusted database and associated with the company identifier. Once thedata is stored, future scans of the UPC can result in theproduct-related information being displayed 206.

As noted above, an untrusted database can be searched using the companyidentifier to determine a company name. In one implementation, theuntrusted database is searched only if company information is not foundin the trusted database. In another implementation, the untrusteddatabase is searched for additional information associated with thecompany. As described in greater detail below, information from theuntrusted database can require further processing to ensure that theinformation is in a usable format. The company name can be used to lookup one or more associated company names from the untrusted database. Theone or more associated company names can include manufacturers,suppliers, retailers, competitors, etc. Prior to using the company name,the company name can be cleansed. For example, various characters and/orphrases such as, but not limited to commas, articles, notation,generalized text, search text, etc., can be removed from the companyname to get a cleansed name. The cleansed name can be used to determinethe one or more names that are associated with the company name. Usingthe associated company names, one or more ticker symbols associated withthe associated company names can be determined. In one implementation,the associated company names are cleansed the same way as the companyname was prior to determining corresponding ticker symbols.

If the company name is not found in the untrusted database, a user canbe asked to provide information related to the scanned UPC code. Forexample, the user can provide a product name and any known companyinformation. This information can then be added to the trusted databasefor use with future scans of the same UPC code.

In some implementations, before the one or more associated company namesare used to determine one or more ticker symbols, the associated companynames are processed to determine a probable or expected relevance to theuser. For example, if there are more than a predetermined number ofassociated company names, the most relevant associated company names canbe determined. Various known relevancy ranking algorithms can be used,such as, but not limited to, Levenshtein distance, Bipartite, etc.

Once the ticker symbols are determined, the ticker symbols, the companyname, and/or the one or more associated company names can be added to awatch list associated with a user using an “add to watch list” button,such as 208 and 212. Prior to adding a ticker symbol to a watch list,user verification can take place. For example, the user can provide ausername and password, which can be verified, prior to adding a tickersymbol to a user's watch list.

In another implementation, the location of the user can also beassociated with a company that can be added to the user's watch list.For example, the location of the user can be determined by GPS or byreceiving the longitudinal and latitudinal coordinates of the user'smobile computing device. The location of the mobile computing device canbe used to determine in what store the user is likely located, or whatstores are nearby. For example, the location can be used to query a datastore to determine what stores are near a location of the user. A storename can be used to determine a one or more associated company namesassociated with the store. The associated companies can includemanufacturers, suppliers, retailers, competitors, the company nameassociated with a product, etc. The store name and the associatedcompany names can be used to determine a set of ticker symbolsassociated with the companies. The user can then have the option ofadding one or more of the ticker symbols to his watch list. Accordingly,in another implementation a store's name can be used to determine a setof one or more companies and ticker symbols associated with the store,which can be added to the user's watch list.

FIGS. 3A-3C are illustrations of a trading interface received based upona UPC in accordance with an illustrative implementation. The watch listis a list of one or more ticker symbols that can include associated data304. For example, the watch list can provide a current price, a changein price, a company name, a bid price, an ask price, etc. associatedwith each ticker symbol in the watch list. An edit button 302 allows auser to add and/or remove ticker symbols from the watch list. The usercan also trade and/or receive data related to a ticker symbol from thewatch list. For example, a user can request to trade an instrumentassociated with a ticker symbol. As another example, a user can requestinformation about a stock price associated with a ticker symbol. Theinformation can include price information 308, such as, but not limitedto a current price, a change in price, a percentage change in price,etc. In addition, trading data 310 can also be provided. Trading data310 can include, but is not limited to a bid price, an ask price, adaily low, a daily high, a number of shares offered at the bid price, anumber of shares offered at the ask price, an open price, a close price,a volume, a profit to earnings ratio, etc. A user can trade aninstrument associated with a company using a trade button 306. Forexample, a user can buy and/or sell stock, options, bonds, etc. of acompany. In one implementation, the user can place an order to buy orsell a number of shares, options, or bonds of the company. A remoteserver can receive and process this order.

In addition to trading an instrument associated with a company, a usercan request other information associated with the company from the watchlist. For example, the user can request news about a company or chartsabout a company. In one implementation, a chart 312 can include acompany's stock price over a period of time.

As described above, UPC data can be used to determine one or more tickersymbols associated with the UPC data. FIG. 4 describes one process fordetermining one or more ticker symbols from the UPC data. FIG. 4 is aflow diagram of a process for retrieving a trading interface based upona UPC in accordance with an illustrative implementation. The process 400can be implemented on a computing device. In one implementation, theprocess 400 is encoded on a computer-readable medium that containsinstructions that, when executed by a computing device, cause thecomputing device to perform operations of process 400.

Barcode data is received (402). For example, UPC data can be received ata mobile computing device. In one implementation, the mobile computingdevice can capture an image of a UPC symbol. The image can be processedby the mobile computing device or sent to a remote computing device. Theimage is processed to determine UPC data, that is received by the mobilecomputing device. A company identifier is determined from the barcodedata (404). For example, the company identifier can include the first 6digits of the UPC. Using the company identifier, a company nameassociated with the company identifier is determined (406). In oneimplementation, a data store contains a mapping from a companyidentifier to a company name. In some implementations, the company nameis cleansed as described above. The company's name is used to determineone or more associated company names (408). The one or more associatedcompany names can include one or more manufacturers, suppliers,retailers, customers, competitors, etc. In some implementations, thereare no associated company names. As described above, the one or moreassociated company names are cleansed in the same manner as the companyname. The company name can be used to determine a ticker symbolassociated with the company name (410). In addition, one or more tickersymbols can be determined from the one or more associated company names(412). These ticker symbols can be displayed to a user, and the user canadd one or more ticker symbols to his watch list. Once a ticker symbolis added to the watch list, the watch list can provide the user withnews, charts, financial information, historical data, any other relatedinformation that may be supplied by various financial exchanges, anyother information relevant to the user, etc., related to the tickersymbols within the watch list. In addition, the user can tradeinstruments associated with any ticker symbol from the watch list.

In another implementation, a server can process barcode data, such asUPC data, to determine a ticker symbol. For example, a mobile computingdevice can take a picture of a UPC. The image of the UPC can betransmitted to a remote server. The remote server can process the imagedata to decode the sequence of numbers encoded in the captured UPC. Theserver can then use local or remote data stores to look up a companyname based on the company prefix of the UPC, and then determine one ormore associated company names. The company name and the one or moreassociated company names can be used to determine one or more tickersymbols. The remote server can send the ticker symbols and other datasuch as, but not limited to the company name, one or more associatedcompany names, the one or more ticker symbols, etc., to the mobilecomputing device. In another implementation, the mobile computing devicecan process the UPC data to determine the one or more ticker symbols.

In another implementation, a QR code can be used to determine one ormore companies and ticker symbols associated with the QR code. As anexample, a QR code can be located on a business card or advertisement. Amobile computing device can capture an image of the QR code. The mobilecomputing device or a remote server can decode QR data encoded in the QRcode. QR data can include a company identifier, such as, but not limitedto, a company prefix, a uniform resource locator (URL), contactinformation, etc. The decoded QR data can be used to determine one ormore company names. For example, a company identifier can be used todetermine a company name as described above. A URL can be mapped to oneor more companies using a database that maps URLs to company names. URLscan also be used to determine one or more company names using anyavailable registrar information. For example, the registrar informationassociated with the URL can be retrieved from a remote server, e.g., awhois server. This information can be parsed to determine one or morecompany names. In one implementation, a portion or all of the registrarinformation can be cleansed in a similar manner as a company name asdescribed above. Contact information can also be used to determine oneor more company names. For example, the QR data can include an emailaddress and/or a company name. A domain of the email address can be usedto lookup the company name based upon a registrar information or a URLto company name mapping data store. Once the one or more company namesare determined, the one or more company names can be used to determineone or more associated companies, such as manufacturers, affiliates,subsidiaries, competitors, retailers, suppliers, etc. One or more tickersymbols of the one or more company names and the one or more associatedcompany names can be determined using the one or more company names andthe one or more associated company names. A user can be provided with alist of these company names, associated company names, and tickersymbols. The user can select any of the names or ticker symbols to addto his watch list.

FIG. 5 is a block diagram of a computer system in accordance with anillustrative implementation. The computer system or computing device 500can be used to implement cell phones, clients, servers, cloud computingresources, etc. The computing system 500 includes a bus 505 or othercommunication component for communicating information and a processor510 or processing circuit coupled to the bus 505 for processinginformation. The computing system 500 can also include one or moreprocessors 510 or processing circuits coupled to the bus for processinginformation. The computing system 500 also includes main memory 515,such as a random access memory (RAM) or other dynamic storage device,coupled to the bus 505 for storing information, and instructions to beexecuted by the processor 510. Main memory 515 can also be used forstoring position information, temporary variables, or other intermediateinformation during execution of instructions by the processor 510. Thecomputing system 500 may further include a read only memory (ROM) 510 orother static storage device coupled to the bus 505 for storing staticinformation and instructions for the processor 510. A storage device525, such as a solid state device, magnetic disk or optical disk, iscoupled to the bus 505 for persistently storing information andinstructions.

The computing system 500 may be coupled via the bus 505 to a display535, such as a liquid crystal display, or active matrix display, fordisplaying information to a user. An input device 530, such as akeyboard including alphanumeric and other keys, may be coupled to thebus 505 for communicating information and command selections to theprocessor 510. In another implementation, the input device 530 has atouch screen display 535. The input device 530 can include a cursorcontrol, such as a mouse, a trackball, or cursor direction keys, forcommunicating direction information and command selections to theprocessor 510 and for controlling cursor movement on the display 535.

According to various implementations, the processes described herein canbe implemented by the computing system 500 in response to the processor510 executing an arrangement of instructions contained in main memory515. Such instructions can be read into main memory 515 from anothercomputer-readable medium, such as the storage device 525. Execution ofthe arrangement of instructions contained in main memory 515 causes thecomputing system 500 to perform the illustrative processes describedherein. One or more processors in a multi-processing arrangement mayalso be employed to execute the instructions contained in main memory515. In alternative implementations, hard-wired circuitry may be used inplace of or in combination with software instructions to effectillustrative implementations. Thus, implementations are not limited toany specific combination of hardware circuitry and software.

Although an example computing system has been described in FIG. 5,implementations of the subject matter and the functional operationsdescribed in this specification can be implemented in other types ofdigital electronic circuitry, or in computer software, firmware, orhardware, including the structures disclosed in this specification andtheir structural equivalents, or in combinations of one or more of them.

Implementations of the subject matter and the operations described inthis specification can be implemented in digital electronic circuitry,or in computer software, firmware, or hardware, including the structuresdisclosed in this specification and their structural equivalents, or incombinations of one or more of them. The subject matter described inthis specification can be implemented as one or more computer programs,i.e., one or more modules of computer program instructions, encoded onone or more non-transitory computer storage media for execution by, orto control the operation of, data processing apparatus. Alternatively orin addition, the program instructions can be encoded on anartificially-generated propagated signal, e.g., a machine-generatedelectrical, optical, or electromagnetic signal that is generated toencode information for transmission to suitable receiver apparatus forexecution by a data processing apparatus. A computer storage medium canbe, or be included in, a non-transitory computer-readable storagedevice, a computer-readable storage substrate, a random or serial accessmemory array or device, or a combination of one or more of them.Moreover, while a computer storage medium is not a propagated signal, acomputer storage medium can be a source or destination of computerprogram instructions encoded in an artificially-generated propagatedsignal. The computer storage medium can also be, or be included in, oneor more separate components or media (e.g., multiple CDs, disks, orother storage devices). Accordingly, the computer storage medium is bothtangible and non-transitory.

The operations described in this specification can be performed by adata processing apparatus on data stored on one or morecomputer-readable storage devices or received from other sources.

The term “data processing apparatus” or “computing device” encompassesall kinds of apparatus, devices, and machines for processing data,including by way of example a programmable processor, a computer, asystem on a chip, or multiple ones, or combinations of the foregoing.The apparatus can include special purpose logic circuitry, e.g., an FPGA(field programmable gate array) or an ASIC (application-specificintegrated circuit). The apparatus can also include, in addition tohardware, code that creates an execution environment for the computerprogram in question, e.g., code that constitutes processor firmware, aprotocol stack, a database management system, an operating system, across-platform runtime environment, a virtual machine, or a combinationof one or more of them. The apparatus and execution environment canrealize various different computing model infrastructures, such as webservices, distributed computing and grid computing infrastructures.

A computer program (also known as a program, software, softwareapplication, script, or code) can be written in any form of programminglanguage, including compiled or interpreted languages, declarative orprocedural languages, and it can be deployed in any form, including as astand-alone program or as a module, component, subroutine, object, orother unit suitable for use in a computing environment. A computerprogram may, but need not, correspond to a file in a file system. Aprogram can be stored in a portion of a file that holds other programsor data (e.g., one or more scripts stored in a markup languagedocument), in a single file dedicated to the program in question, or inmultiple coordinated files (e.g., files that store one or more modules,sub-programs, or portions of code). A computer program can be deployedto be executed on one computer or on multiple computers that are locatedat one site or distributed across multiple sites and interconnected by acommunication network.

Processors suitable for the execution of a computer program include, byway of example, both general and special purpose microprocessors, andany one or more processors of any kind of digital computer. Generally, aprocessor will receive instructions and data from a read-only memory ora random access memory or both. The essential elements of a computer area processor for performing actions in accordance with instructions andone or more memory devices for storing instructions and data. Generally,a computer will also include, or be operatively coupled to receive datafrom or transfer data to, or both, one or more mass storage devices forstoring data, e.g., magnetic, magneto-optical disks, or optical disks.However, a computer need not have such devices. Moreover, a computer canbe embedded in another device, e.g., a mobile telephone, a personaldigital assistant (PDA), a mobile audio or video player, a game console,a Global Positioning System (GPS) receiver, or a portable storage device(e.g., a universal serial bus (USB) flash drive), to name just a few.Devices suitable for storing computer program instructions and datainclude all forms of non-volatile memory, media and memory devices,including by way of example semiconductor memory devices, e.g., EPROM,EEPROM, and flash memory devices; magnetic disks, e.g., internal harddisks or removable disks; magneto-optical disks; and CD-ROM and DVD-ROMdisks. The processor and the memory can be supplemented by, orincorporated in, special purpose logic circuitry.

To provide for interaction with a user, implementations of the subjectmatter described in this specification can be implemented on a computerhaving a display device, e.g., a CRT (cathode ray tube) or LCD (liquidcrystal display) monitor, for displaying information to the user and akeyboard and a pointing device, e.g., a mouse or a trackball, by whichthe user can provide input to the computer. Other kinds of devices canbe used to provide for interaction with a user as well; for example,feedback provided to the user can be any form of sensory feedback, e.g.,visual feedback, auditory feedback, or tactile feedback; and input fromthe user can be received in any form, including acoustic, speech, ortactile input.

While this specification contains many specific implementation details,these should not be construed as limitations on the scope of anyinventions or of what may be claimed, but rather as descriptions offeatures specific to particular implementations of particularinventions. Certain features described in this specification in thecontext of separate implementations can also be implemented incombination in a single implementation. Conversely, various featuresdescribed in the context of a single implementation can also beimplemented in multiple implementations separately or in any suitablesubcombination. Moreover, although features may be described above asacting in certain combinations and even initially claimed as such, oneor more features from a claimed combination can in some cases be excisedfrom the combination, and the claimed combination may be directed to asubcombination or variation of a subcombination.

Similarly, while operations are depicted in the drawings in a particularorder, this should not be understood as requiring that such operationsbe performed in the particular order shown or in sequential order, orthat all illustrated operations be performed, to achieve desirableresults. In certain circumstances, multitasking and parallel processingmay be advantageous. Moreover, the separation of various systemcomponents in the implementations described above should not beunderstood as requiring such separation in all implementations, and itshould be understood that the described program components and systemscan generally be integrated in a single software product or packagedinto multiple software products.

Thus, particular implementations of the subject matter have beendescribed. Other implementations are within the scope of the followingclaims. In some cases, the actions recited in the claims can beperformed in a different order and still achieve desirable results. Inaddition, the processes depicted in the accompanying figures do notnecessarily require the particular order shown, or sequential order, toachieve desirable results. In certain implementations, multitasking andparallel processing may be advantageous.

What is claimed is:
 1. A method comprising: receiving barcode dataincluding a company identifier; determining the company identifier fromthe barcode data; determining a company name based upon the companyidentifier; determining, using a processor, one or more associatedcompany names associated with the company name based upon the companyname; determining a first ticker symbol based upon the company name; anddetermining one or more ticker symbols based upon the one or moreassociated company names.
 2. The method of claim 1, further comprisingadding the first ticker symbol to a watch list associated with a user.3. The method of claim 2, further comprising providing the watch list toa remote computing device.
 4. The method of claim 3, further comprisingreceiving a trade order of the first ticker symbol associated with theuser.
 5. The method of claim 1, further comprising determining alocation of a user, wherein the determining one or more ticker symbolsis based upon the location of the user.
 6. The method of claim 1,further comprising: capturing an image of a barcode; and processing theimage of the barcode to generate the barcode data.
 7. The method ofclaim 1, further determining an updated company name by removingarticles and commas from the company name prior to determining the oneor more associated company names, wherein the one or more company namesare determined based upon the updated company name.
 8. The method ofclaim 1, further determining updated one or more company names byremoving articles and commas from each of the one or more associatedcompany names prior to determining the one or more ticker symbols,wherein the one or more ticker symbols are determined based upon theupdated one or more company names.
 9. The method of claim 1, furthercomprising sending related information based upon the first tickersymbol.
 10. The method of claim 1, further comprising determining aproduct associated with the barcode data.
 11. The method of claim 10,further comprising: requesting product data based upon determining noproduct data is available; receiving the product data; and storing thereceived product data associated with the barcode data.
 12. The methodof claim 1, further comprising determining a relevancy of each of theone or more associated company names.
 13. A non-transitorycomputer-readable medium having instructions stored thereon, theinstructions comprising: instructions to receive barcode data includinga company identifier; instructions to determine the company identifierfrom the barcode data; instructions to determine a company name basedupon the company identifier; instructions to determine one or moreassociated company names associated with the company name based upon thecompany name; instructions to determine a first ticker symbol based uponthe company name; and instructions to determine one or more tickersymbols based upon the one or more associated company names.
 14. Thenon-transitory computer-readable medium of claim 13, further comprisinginstructions to add the first ticker symbol to a watch list associatedwith a user.
 15. The non-transitory computer-readable medium of claim14, further comprising instructions to provide the watch list.
 16. Thenon-transitory computer-readable medium of claim 15, further comprisinginstructions to receive a trade order of the first ticker symbolassociated with the user.
 17. The non-transitory computer-readablemedium of claim 16, further comprising: instructions to capture an imageof a barcode; and instructions to process the image of the barcode togenerate the barcode data.
 18. The non-transitory computer-readablemedium of claim 13, further comprising: instructions to determine aproduct associated with the barcode data; instructions to requestproduct data based upon determining no product data is available;instructions to receive the product data; and instructions to storereceived product data associated with the barcode data.
 19. A systemcomprising: one or more processors configured to: receive barcode dataincluding a company identifier; determine the company identifier fromthe barcode data; determine a company name based upon the companyidentifier; determine one or more company names associated with thecompany name based upon the company name; determine a ticker symbolbased upon the company name; and determine one or more ticker symbolsbased upon the one or more associated company names.
 20. The system ofclaim 19, wherein the one or more processors are further configured toadd the first ticker symbol to a watch list associated with a user. 21.The system of claim 20, wherein the one or more processors are furtherconfigured to provide the watch list.
 22. The system of claim 21,wherein the one or more processors are further configured to receive atrade order of the first ticker symbol associated with the user.